Date : 9 septembre 1991
Protection : MOT DE PASSE
Programme : HARDNOVA
Outils : SOFT-ICE V2.50
Fichier : DUME.EXE
Temps pass� : 2 HEURES
Soci�t� : ELECTRONIC ARTS
Divers :
Origine : INDONESIE
Num�ro : 141
C'est le premier ELECTRONIC ARTS sur lequel je me casse les dents pour
la xi�me fois. Lorsqu'on n'arrive pas � trouver l'endroit o� le soft
teste la validit� du mot de passe entr� il faut partir d�s l'origine
c'est � dire mettre un point d'arr�t sur le port clavier en 60h RW et
remonter. Pour tester la touche ENTER il suffit de poser l'�galit�
suivante;
BPIO 60h RW eq 1C ( sous SOFT-ICE ).
J'ai 'p�dal�' dans le vide un bon moment avant de trouver o� les
caract�res �taient rang�s en m�moire:
SS:920 nombre de caract�res entr�s ( nombre qui sera compar� � CX )
SS:921 premier caract�re.
SS:922 second caract�re.
SS:923 etc...
La touche ENTER peut �galement �tre test� par un BP sur l'INT 21 sous-
fonction 06. Voici la routine de v�rification des caract�res entr�s avec
ceux choisi par le programme d'une mani�re al�atoire, ceux-ci sont cod�s
avec un XOR 06 dans le fichier DUME.EXE :
CS=2627
CS:0AF8 8A84B113 MOV <ͻ AL,[SI+13B1] ; Car. choisi par le soft.
CS:0AFC 3C2A CMP � AL,2A ; Si 2A fin de chaine.
CS:0AFE 740E ��< JZ � 0B0E ; Si dernier on v�rifie CX.
CS:0B00 3406 � XOR � AL,06 ; Chaque car. est d�cod�.
CS:0B02 363A872009 � CMP � AL,SS:[BX+0920] ; Teste la chaine...
CS:0B07 753D �����< JNZ � 0B46 ; Mauvais si # 0.
CS:0B09 46 � � INC � SI ; Prochain car. du soft.
CS:0B0A 43 � � INC � BX ; Prochain car. entr�.
CS:0B0B 49 � � DEC � CX ; CX contient le nombre de caract�res
� � � ; de la r�ponse du programme.
CS:0B0C EBEA � � JMP >ͼ 0AF8 ; Boucle la chaine.
CS:0B0E 83F900 � ��> CMP CX,+00 ; CX = 0 si tous les caract�res
� ; on �t� test�.
CS:0B11 7408 � JZ 0B1B ; Suite du programme si OK.
�
CS:0B46 <�ͼ ; Mauvaise r�ponse.
Il faut donc que le r�sultat de la comparaison en CS:0B02 soit �gale �
z�ro. Pour cela il suffit de placer deux NOP en CS:0B07 pour que la
routine se poursuive comme si le caract�re �tait le m�me que celui
demand�. Il faut �galement que le contenu de CX soit �gal � z�ro lorsque
le programme le teste puisqu'il correspond au nombre de caract�res que
le joueur � tap� et qui figure en SS:920 avec le nombre que le
programme a fourni. Donc la �galement il faut forcer le saut qui suit.
Remplacer le saut conditionnel en 0B11 par un JMP. ( EB )
Avec PCTOOLS chercher la chaine 2009753D et modifier 753D par 9090, puis
la chaine 83F9007408 et remplacer 74 par EB.
FREDDY
|